package com.banmao.algorithm.No901To1100.No904;

/**
 *  实际上就是将Solution1的解法中的HashMap替换成数组
 */
public class Solution2 {

    public static int totalFruit(int[] fruits) {

        int left = 0; // 左边界
        int right = 0; // 右边界
        int length = 0; // 长度

        // 记录水果类型出现的次数，下标为水果类型，值为出现的次数
        int[] count = new int[fruits.length];
        int basket = 0; // 篮子个数
        for(; right <= fruits.length - 1; right++) {
            // 先把右边界指向的水果类型放一个篮子
            if(count[fruits[right]] == 0) {
                // 如果右指针指向的水果类型不曾存在，就增加一个篮子
                basket++;
            }
            count[fruits[right]]++;

            // 如果篮子数量大于2，就抛弃左边界指向的水果类型的篮子，收缩左边界，再把左边界指向的水果类型放一个篮子
            // 直到篮子数量不大于2
            while (basket > 2) {

                count[fruits[left]]--;
                if(count[fruits[left]] == 0) {
                    basket--;
                }

                left++;

            }
            int tempLen = right - left + 1;
            length = Math.max(tempLen, length);

        }
        return length;

    }

}
